Перейти к основному содержимому

Описание компонентов системы

Решения по программному обеспечению

Таблица – Используемые программные средства

НаименованиеВерсияТипНазначение
Wildfly Application Server"18.0.1"Сервер приложенийОбеспечивает инфраструктуру функционирования VALO Cloud
PostgreSQL DB Server"11.18"Система управления базами данныхОбеспечивает долговременное хранение пользовательской мета-информации, сообщений синхронизации и межсервисных сообщений
Apache ActiveMQ"5.15.16"Система гарантированной доставки сообщенийЯвляется основой подсистемы гарантированной доставки сообщений и обеспечивает возможность обмена сообщениями между подсистемами/сервисами
ElasticSearch"7.7.16"Комплексное решение для построения поисковой системыОбеспечивает поиск по содержимому файлов пользователей и иной мета-информации
Kannel1.4.4Решения для уведомления пользователей SMS GateWayУведомляет пользователей продукта о произошедших системных или бизнес событиях посредством отправки SMS
Nginx"1.22.1"Служебное ПОWeb-сервер, балансировщик и прокси-сервер
Keepalived"2.2.7"Служебное ПОПО, основанное на протоколе VRRP для обеспечения высокой доступности кластера. Основная функция — реализация изоляции сбоев реальной машины и переключение между балансировщиками нагрузки для предотвращения единичных точек отказа
HAProxy"2.2.29"Служебное ПОПрограммное обеспечение для обеспечения высокой доступности и балансировки нагрузки для TCP и HTTP-приложений. Позволяет создать единую точку подключения к PostgreSQL, не зависящую от распределения ролей в кластерах PostgreSQL
Etcd"3.3.25"Служебное ПОРаспределённое надёжное хранилище ключей и значений для наиболее важных данных распределённой системы. Обеспечивает сохранение текущего состояния реплик PostgreSQL
Patroni"2.1.3"Служебное ПОПриложение для создания высокодоступных PostgreSQL кластеров на основе потоковой репликации. Обеспечивает выбор и переключение ролей реплик
OpenJDK Runtime Environment11.0.18Служебное ПОКомплект разработчика Java приложений
LibreOffice7.5.6.2Офисное ПОПакет ПО офисных приложений. Обеспечивает формирование миниатюр, образа предварительного просмотра файла
GraphicsMagick1.4Служебное ПОНабор графических библиотек/утилит. Обеспечивает формирование миниатюр, образа предварительного просмотра файла
PostgreSQL JDBC Driver42.2.5Служебное ПОДрайвер подключения к СУБД для Java приложений
Решения по управлению и мониторингу
Prometheus"2.37.4"Служебное ПОСистема мониторинга ресурсов
Grafana"8.5.27"Служебное ПОСистема визуализации мониторинга
Alertmanager"0.24.0"Служебное ПОКомпонент Prometheus для рассылки уведомлений
Loki"2.7.0"Служебное ПОНабор компонентов для полноценной системы работы с логами
Node Exporter1.5.0Служебное ПОКомпонент Prometheus для сбора метрик
pg_dump / pg_restore"11.18"Служебное ПОРекомендуемое ПО для обеспечения резервного копирования и восстановления СУБД
lsyncd / rsyncтекущаяСлужебное ПОРекомендуемое ПО для обеспечения резервного копирования пользовательских файлов, расположенных на файловой системе в хранилище

Решения по функциям Системы

Функции, исполняемые VALO Cloud

Функции, исполняемые VALO Cloud

  1. Подсистема аутентификации и авторизации, включая:

    • управление типом аутентификации;
    • локальная аутентификация;
    • настройка смежных систем аутентификации;
    • аутентификация в смежных системах аутентификации;
    • автоматический импорт пользователей из смежных систем аутентификации;
    • контроль дискреционных прав на доступ к объектам;
    • контроль мандатных прав на доступ к объектам;
    • контроль полномочий на исполнение запросов (ролевая модель).
  2. Подсистема управления компаниями (тенантами) — областями хранения данных (объектов доступа), включая:

    • администрирование технологических администраторов;
    • создание, удаление и администрирование тенанта на уровне тех. администратора;
    • управление хранилищами тенанта.
  3. Подсистема администрирования компании (тенанта), включая:

    • создание, удаление и администрирование тенанта;
    • управление хранилищами тенанта;
    • управление настройками тенанта;
    • управление ограничениями и политиками;
    • парольные политики;
    • политики версионирования и квот;
    • политики в отношении пользовательских устройств;
    • сессионные политики;
    • иные политики;
    • управление темами пользовательского интерфейса;
    • управление водяными знаками (кастомизация).
  4. Подсистема управления пользователями, включая:

    • управление пользователями внутри компании (тенанта) – субъекты доступа, включая создание, удаление, администрирование пользователей, управление профилем;
    • управление пользователями-контрагентами – субъекты доступа, включая создание, удаление, администрирование пользователей;
    • управление группами доступа субъекта внутри компании (тенанта), включая:
      • создание, изменение, удаление групп;
      • изменение состава участников;
    • управление системными группами доступа внутри компании (тенанта), включая:
      • создание, изменение, удаление групп;
      • изменение состава участников;
    • управление организационной структурой компании (тенанта), включая:
      • создание, изменение, удаление орг. подразделений;
      • импорт учетных записей в орг. подразделение;
      • группировка пользователей в орг. подразделении;
    • управление организацией совместного доступа к объектам, включая управление списками доступа (создание, изменение, удаление) и их участниками.
  5. Подсистема управления файловым каталогом, включая:

    • чтение, создание, перемещение, копирование, удаление, переименование объектов;
    • восстановление объектов из корзины субъекта или системной корзины;
    • управление версиями;
    • управление избранными объектами;
    • управление недавно использованными объектами;
    • создание архивов;
    • создание миниатюр;
    • поиск файлов и мета-информации;
    • синхронизация объектов.
  6. Подсистема управления моделями безопасности, включая:

    • управление дискреционной моделью доступа (в т. ч. публичного), включая:
      • делегирование прав на объекты группе пользователей и/или индивидуально субъекту;
      • отзыв прав на объекты у группы пользователей и/или субъекта;
      • ограничение (запрет) доступа к объектам группе пользователей и/или индивидуально субъекту;
    • управление ролевой моделью доступа, включая:
      • управление (создание, изменение, удаление) ролями;
      • управление функциями роли (делегирование, отзыв);
      • управление ролями пользователя (делегирование, отзыв);
    • управление мандатной моделью доступа, включая:
      • управление справочниками (создание, изменение, удаление) зон и уровней доступа;
      • распределение пользователям по зонам и уровням доступа.
  7. Подсистема управления планировщиком, включая:

    • системный планировщик:
      • очистка сессионных ключей;
      • очистка незавершенной записи данных (файлов);
      • очистка системной корзины;
      • очистка заданий фоновой обработки;
      • очистка журналов;
      • обработка очередей заданий на обработку файлов;
      • подсчет используемого пространства;
      • очистка ленты событий;
      • очистка публичных ссылок, исчерпавших свой ресурс;
    • пользовательский планировщик удаления объектов:
      • управление заданиями;
      • управление правилами.
  8. Подсистема синхронизации, включая:

    • создание/удаление/блокировку устройств;
    • управление синхронизацией;
    • управление "тонким" и "толстым" хранением;
    • формирование и рассылка сообщений синхронизации мета-информации.
  9. Подсистема журналирования, включая:

    • регистрация событий в журналах доступа к данным, разграничения прав доступа, авторизации;
    • просмотр событий;
    • администрирование/настройка журналов;
    • репликация журналов в смежные SIEM-системы.
  10. Подсистема уведомлений, включая:

  • управление каналами уведомлений/рассылки оповещений;
  • управление бизнес-событиями;
  • публикация/подписка;
  • чтение ленты бизнес-событий;
  • обсуждение объектов (комментарии, чат), включая:
    • подписку;
    • создание, удаление комментариев;
  • управление шаблонами почтовых сообщений (кастомизация);
  • оповещение пользователей о бизнес-событиях через смежные SMS-центры, SMTP-службы, FCM.
  1. Подсистема согласования запросов, включая:
  • создание/удаление/согласование запросов;
  • репликация мета-информации;
  • интеграция с BPM Engine.
  1. Конвейер задач, включая:
  • администрирование задач экземпляра Системы;
  • администрирование задач тенанта;
  • обработка пост-процессинговых и интеграционных задач;
  • обработка фоновых задач, в составе: формирование архивов, формирование preview.
  1. Подсистема управления файлообменом, включая:
  • управление файловыми хранилищами;
  • запись (сохранение) данных;
  • чтение (скачивание) данных;
  • чтение (просмотр) данных;
  • удаление данных;
  • перемещение данных;
  • совместное редактирование (при наличии онлайн-редактора);
  • (де)шифрование;
  • проверка данных в антивирусных системах (AV);
  • проверка данных в системах предотвращения утечки информации (DLP);
  • проверка данных в системах безопасного/карантинного тестирования (SANDBOX).

Все подсистемы VALO Cloud представлены на Рис. Подсистемы VALO Cloud.

Решения по архитектуре

Основу архитектуры VALO Cloud для промышленной среды представляет собой отказоустойчивые решения для:

  • серверов БД с использованием технологии асинхронной репликации;
  • серверов приложений;
  • брокеров сообщений;
  • балансировщиков загрузки;
  • приложений для создания высокодоступных кластеров.

Схема построения и взаимосвязи компонентов VALO Cloud представлена на диаграмме в Приложении 1.

Функционально компоненты VALO Cloud можно разделить на:

  • уровень ядра, обеспечивающий хранение и обработку бизнес-информации;
  • уровень интеграционного взаимодействия со смежными системами.

Уровень ядра

Уровень ядра представлен:

  • СУБД, содержащей бизнес-информацию (файлы, папки, доступ, ссылки и т.д.), порожденную пользователями посредством использования Rest-сервисов;
  • СУБД, представляющей собой выборочную реплику сущностей БД Rest-сервисов, которая предназначена для формирования и последующей рассылки уведомлений с помощью серверов приложений с развернутыми на ними асинхронными JMS-сервисами;
  • сервером приложений с развернутыми Rest-сервисами;
  • сервером приложений с развернутыми JMS-сервисами;
  • межсервисным брокером сообщений;
  • клиентским брокером сообщений.

Все компоненты ядра должны быть синхронизированы по времени, например, с помощью внешнего источника времени (ntp-сервер).

СУБД Rest-сервисов

СУБД Rest-сервисов является основной СУБД продукта VALO Cloud. Предназначена для хранения и обработки информации, поступающей посредством использования Rest-сервисов.

Для нагруженных систем и систем с требованиями к отказоустойчивости может использоваться кластер с одной мастер-репликой и несколькими R/O-репликами (hot-standby в терминах PostgreSQL). При необходимости возможно также добавление warm-standby реплик (запросы на чтение с которых не обрабатываются).

Версии СУБД всех реплик и аппаратная архитектура их платформ должны быть одинаковыми.

При использовании потоковой репликации рекомендуется организовать минимум 2 (две) резервных реплики с асинхронным режимом репликации. В системе также допускается использование каскадной репликации.

Физические сетевые интерфейсы серверов БД должны быть организованы в отказоустойчивые соединения за счет агрегирования каналов и быть сконфигурированы таким образом, чтобы операции репликации и обработки пользовательских запросов происходили на разных (с точки зрения ОС) интерфейсах. Указанные сетевые интерфейсы должны находиться в разных ip-сетях и, крайне желательно, в разных широковещательных доменах. Кроме того, сервера СУБД должны иметь избыточные каналы связи, блокируемые Spanning Tree или ему подобным алгоритмом.

Комментарии к основным параметрам конфигурации СУБД указаны в Приложении 5.

СУБД Уведомлений

СУБД Уведомлений продукта VALO Cloud предназначена для хранения частичной реплики данных СУБД Rest-сервисов и последующего формирования уведомлений в сторону пользователей.

Наполнение БД осуществляется:

  • в момент развертывания public-схемы СУБД Rest-сервисов;
  • в момент создания схем тенантов;
  • при осуществлении CUD операций (создание, изменение, удаление) в основной БД VALO Cloud.

Непосредственным наполнением БД занимаются асинхронные JMS-сервисы (см. Приложение 2).

Принципы организации отказоустойчивой схемы аналогичны СУБД Rest-сервисов.

СУБД брокеров сообщений

СУБД брокеров сообщений продукта VALO Cloud предназначена для хранения сообщений межсервисного общения, клиентских сообщений уведомлений и синхронизации.

Наполнение БД осуществляется:

  • в момент создания пост-процессинговых и асинхронных задач Rest-сервисов;
  • в момент создания бизнес-сущностей;
  • при возникновении системных и бизнес-событий (рассылка уведомлений).

Непосредственным наполнением БД занимаются REST и JMS-сервисы.

Принципы организации отказоустойчивой схемы аналогичны СУБД Rest-сервисов.

Вот отформатированный текст в Markdown:

Rest-сервисы

Rest-сервисы представляют собой сервер приложений с развернутым на нем приложением "valorest". Указанные сервисы обеспечивают:

  • набор "конечных точек" (конечных автоматов) для CRUD запросов с URL "/api" и '/api/data';
  • запуск периодических, постпроцессинговых и асинхронных задач;
  • формирование и отправку в сторону брокера сообщений синхронизации для клиентской части приложения;
  • формирование и отправку в сторону брокера сообщений для JMS-сервисов.

Система допускает одновременное функционирование нескольких экземпляров серверов приложений с развернутыми на них Rest-сервисами.

В нагруженной среде с требованиями к доступности Системы рекомендуется:

  • развертывание Rest и JMS сервисов на разных вычислительных мощностях. Также возможно одновременное развертывание сервисов указанных типов на нескольких серверах;
  • развертывание нескольких экземпляров Rest-сервисов с установкой балансировщика нагрузки или разведение на уровне прокси-серверов GET и прочих (остальных типов) запросов (POST, PATCH и т.д.) по разным экземплярам Rest-сервисов;
  • использование R/O реплики СУБД Rest-сервисов для GET запросов в дополнении к первым двум мерам.

При создании, изменении мета-информации/настроек тенантов в СУБД Rest-сервисов, касающихся работы асинхронных JMS-сервисов (см. Приложение 2 и файл valo-services.xml), происходит оповещение серверов приложений через межсервисный брокер посредством топика "JMS-SERVICES.CONFIG-CHANGES.Topic". Одновременное (условно одновременное) изменения настроек JMS-сервисов не вызывает конфликтов на уровне серверов приложений с развернутыми Rest-сервисами.

Асинхронные JMS-сервисы

Асинхронные JMS-сервисы представляют собой сервер приложений с развернутым на нем приложением "jms-services-ear". Указанные сервисы обеспечивают:

  • выполнение асинхронных сервисов (см. Приложение 2 и файл valo-services.xml);
  • отправку в сторону брокера комментариев, push-уведомлений для клиентской части приложения;
  • отправку разнообразных почтовых сообщений и SMS.

Система допускает одновременное функционирование нескольких экземпляров серверов приложений с развернутыми на них JMS-сервисами.

В нагруженной среде с требованиями к доступности Системы рекомендуется:

  • развертывание Rest и JMS сервисов на разных вычислительных мощностях;
  • развертывание нескольких экземпляров серверов приложений с развернутыми на них JMS-сервисами.

Общие замечания к серверам приложений

Как и сервера СУБД, сервера приложений также должны иметь отказоустойчивые соединения и избыточные каналы связи. Все сервера приложений (вне зависимости от развернутых на них приложений) должны иметь доступ ко всем используемым хранилищам файлов. На одном и том же сервере приложений можно развернуть как приложения, обслуживающие Rest-сервисы, так и JMS-сервисы.

Сетевые интерфейсы серверов приложений должны быть логически разделены на интерфейсы, обслуживающие http-запросы, брокерное взаимодействие и интерфейсы, оперирующие с СУБД. Указанные группы интерфейсов должны находиться в разных ip-сетях и широковещательных доменах.

Архивы журналов серверов приложений при их длительном хранении и большом периодом ротации должны находиться в таком месте файловой системы, которое не привело бы к отказу в обслуживании в случае нехватки дискового пространства.

Комментарии к настройкам серверов приложений см. в Приложении 3.

Межсервисный брокер

Межсервисный брокер — брокер или сеть брокеров, предназначенных для работы REST и JMS-сервисов. При подключении к брокеру поставщики и получатели сообщений должны пройти процедуру аутентификации и авторизации путем указания пары логин/пароль или с использованием механизма SSL. Брокер использует протокол OpenWire для работы с REST и JMS-сервисами VALO Cloud и позволяет реализовывать failover соединения (см. описание сервисов Valo и файл valo-services.xml).

Если в нагруженных системах на одном и том же брокере функционируют несколько протоколов (WS/STOMP и OpenWire), то в конфигурации брокера следует настроить транспортные коннекторы на разные интерфейсы.

Клиентский брокер Apache Active MQ

Клиентский брокер — брокер или сеть брокеров, предназначенных для получения клиентскими частями приложения сообщений синхронизации. При подключении к брокеру клиентская часть приложения должна пройти процедуру аутентификации и авторизации путем указания пары логин/пароль. Брокер использует протоколы WS и STOMP для работы с клиентской частью приложения.

Если в нагруженных системах на одном и том же брокере функционируют несколько протоколов (WS/STOMP и OpenWire), то в конфигурации брокера следует настроить транспортные коннекторы на разные интерфейсы.

Комментарии к настройкам брокеров сообщений см. в Приложении 4.

Уровень интеграционного взаимодействия со смежными Системами

Уровень интеграционного взаимодействия со смежными Системами обеспечивается за счет межсервисного брокера и набора асинхронных JMS-сервисов. Настройка сервисов, взаимодействующих со смежными Системами рассматривается в Приложении 2 и Приложении 8. Настройка брокеров сообщений рассматривается в Приложении 4.

Подсистемы VALO Cloud